# -*- coding: latin-1 -*-
import sys, re
from PyQt4.QtSql import QSqlQuery
from PyQt4.QtGui import QDialog,  QMessageBox
from PyQt4.QtCore import Qt,  QVariant,  QDate,  SIGNAL

sys.path.append("../")

from vista.entrega_vista import Ui_entrega
from modelo.haber_modelo import haber_modelo
from modelo.debe_modelo import debe_modelo
from validacion import validacion

DEBUG = False

class entrega_controlador(Ui_entrega):
    def __init__(self, labelSaldo, idDuenio, nombreDuenio):
        self.widget = QDialog()
        self.setupUi(self.widget)
        # Connections
        self.widget.connect(self.pushButtonBorrarEntrega, SIGNAL("clicked()"), 
             		    self.borrarEntrega) 
        self.widget.connect(self.pushButtonEntrega, SIGNAL("clicked()"), 
             		    self.entrega)
        self.widget.connect(self.tableViewEntregas, SIGNAL("clicked(QModelIndex)"), self.activarBorrar)
        self.labelSaldo = labelSaldo
        self.id_duenio = idDuenio
        self.nombreDuenio = nombreDuenio
        self.haber=haber_modelo()
        filtro="id_duenio = "+str(idDuenio)
        self.haber.model.setFilter(filtro)
        self.tableViewEntregas.setModel(self.haber.model)
        self.labelCliente.setText(nombreDuenio)
        self.ajustarDatosTabla()
        self.idDuenio = idDuenio
        self.tableViewEntregas.setColumnHidden(0, True)
        self.tableViewEntregas.setColumnHidden(3, True)
        self.pushButtonBorrarEntrega.setEnabled(False)

    def activarBorrar(self):
        self.pushButtonBorrarEntrega.setEnabled(True)
        
    def borrarEntrega(self):
        seleccionado=self.tableViewEntregas.selectedIndexes()[0]
        record = self.haber.model.record(seleccionado.row())
        respuesta = QMessageBox.question(None, "Message", 
        "Esta seguro que desea borrar esta entrega?","No","Si","" ,  False,  True)
        if respuesta: 
            idEntrega = record.value("id").toInt()[0]
            self.haber.eliminarRegistro(idEntrega)
            self.ajustarDatosTabla()
            self.recargarSaldo()
            self.pushButtonBorrarEntrega.setEnabled(False)
    
    def entrega(self):
        validador = validacion()
        entrega = self.lineEditEntrega.text()
        if validador.esMoneda(entrega):
            fecha_entrega = QDate.currentDate()
            query = QSqlQuery()
            query.prepare("INSERT INTO haber (entrega,fecha_entrega,id_duenio)  VALUES  \
                    (:entrega, :fecha_entrega,:id_duenio)")
            query.bindValue(":entrega", QVariant(entrega)) 
            query.bindValue(":fecha_entrega", QVariant(fecha_entrega)) 
            query.bindValue(":id_duenio", QVariant(self.idDuenio)) 
            query.exec_()
            self.haber.model.select()
            self.recargarSaldo()
        else:
            QMessageBox.critical(None, "Error", "El importe ingresado es incorrecto")        
            self.lineEditEntrega.setFocus()

        
    def ajustarDatosTabla(self):
        self.tableViewEntregas.resizeColumnsToContents()
        self.tableViewEntregas.setHorizontalHeader(self.tableViewEntregas.horizontalHeader().setStretchLastSection(True))

    def recargarSaldo(self):
        debeModelo = debe_modelo()
        debe = debeModelo.obtenerTotal(self.id_duenio)
        haber = self.haber.obtenerTotal(self.id_duenio)
        saldo = float(debe) - float(haber)
        if saldo > 0:
            self.labelSaldo.setText("<font style='color: red;'>"+str(saldo)+"</font>")
        else:
            self.labelSaldo.setText("<font style='color: black;'>"+str(saldo)+"</font>")
